//
//  DBYDestionationFlowLayout.m
//  MemoryTravel
//
//  Created by dllo on 15/12/30.
//  Copyright © 2015年 fcx. All rights reserved.
//

#import "DBYDestionationFlowLayout.h"

@implementation DBYDestionationFlowLayout
-(void)prepareLayout
{
    [super prepareLayout];
    
    self.maxHeight = 0;
    
    //用来存放item属性设置
    self.array = [NSMutableArray array];
    
    CGFloat LeftY = 0;//第一列item y坐标的初始值
    CGFloat RightY = 0;//第二列item y坐标的初始值
    
    //计算contentview 第1步
    CGFloat maxLeft = 0;
    CGFloat maxRight = 0;
    
    //获得当前section有多少个item
    NSInteger count = [self.collectionView numberOfItemsInSection:0];
    
    //设置每个item的属性
    for (int i = 0; i < count; i++) {
        //生成item下标
        NSIndexPath *index = [NSIndexPath indexPathForItem:i inSection:0];
        
        //根据item下标取出每个item属性对象,通过它能设置item的frame
        UICollectionViewLayoutAttributes *attributes = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:index];
        
        float offsetX = 0;//默认x坐标为0
        if (i % 2 == 0) {
            
            offsetX = 5 * WID;//设置左列第一个item为20
            
        }else
        {
            offsetX = WIDTH / 2 + 5 * WID;//设置右列第一个item为195
        }
        
        //获取协议返回的size(网路数据中的高和宽)
        CGSize itemSize = [self.delegate collectionView:self.collectionView layout:self sizeForItemAtIndexPath:index];
        
        
        //设置每一个item的frame属性
        if (i % 2 == 0) {
            //设置第一列item的frame
            attributes.frame = CGRectMake(offsetX, LeftY , itemSize.width, itemSize.height);
            maxLeft  = LeftY + itemSize.height;//记录左列所有item高度 //计算contentview 第2步
            
            LeftY += itemSize.height + 5 * HEI;
            
            
        }else
        {   //设置第二列item的frame
            attributes.frame = CGRectMake(offsetX, RightY , itemSize.width, itemSize.height);
            maxRight = RightY + itemSize.height;//记录右列所有item高度 //计算contentview 第3步
            
            RightY += itemSize.height + 5 * HEI;
            
            
        }
        
        //计算contentview 第4步  +5是最后一个item与下边缘的间隔
        //        self.maxHeight = maxLeft > maxRight ? maxLeft + 5 : maxRight + 5;
        
        //****也可以用下面一句话搞定*****//
        //CGRectGetMaxY是获取y坐标值+控件高度的值
        self.maxHeight = MAX(self.maxHeight, CGRectGetMaxY(attributes.frame));
        
        //存入数组中
        [self.array addObject:attributes];
        
    }
    
}


//重写系统方法,初始的layout的外观将由该方法返回的UICollectionViewLayoutAttributes来决定
-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    
    NSMutableArray *arr = [[NSMutableArray alloc] init];
    for (int i = 0; i < [self.array count]; i++) {
        UICollectionViewLayoutAttributes *att = [self.array objectAtIndex:i];
        
        //判断第二个rect是不是在第一个rect的范围之内
        if (CGRectIntersectsRect(rect, att.frame)) {
            [arr addObject:att];
        }
    }
    return arr;
}

//重新设置滚动范围ContentSize
- (CGSize)collectionViewContentSize
{
    
    return CGSizeMake(self.collectionView.frame.size.width, self.maxHeight);
}

@end
